Integrated multi-provider compute platform

ABSTRACT

The present invention includes embodiments of systems and methods for addressing the interdependencies that result from integrating the computing resources of multiple hardware and software providers. The integrated, multi-provider cloud-based platform of the present invention employs abstraction layers for communicating with and integrating the resources of multiple back-end hardware providers, multiple software providers and multiple license servers. These abstraction layers and associated functionality free users not only from having to implement and configure provider-specific protocols, but also from having to address interdependencies among selected hardware, software and license servers on a job-level basis or at other levels of granularity.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. patent application Ser. No.15/235,004, filed Aug. 11, 2016 and entitled “Dynamic Optimization ofSimulation Resources,” the disclosure of which is hereby incorporated byreference as if fully set forth herein.

BACKGROUND Field of Art

The present invention relates generally to cloud-based platforms, and inparticular to a cloud-based compute platform that resolves for end usersthe interdependencies that result from integrating third-party back-endhardware with third-party software across multiple providers.

Description of Related Art

Beginning with the advent of supercomputing in the 1960s, “highperformance computing” (HPC) tasks were relegated to high-end expensivecomputer systems that only large companies could afford. HPC tasks aresometimes characterized narrowly (in Wikipedia and elsewhere) asrequiring large amounts of computing resources for relatively shortperiods of time.

Such a characterization facilitates distinctions from other forms ofsupercomputing (HTC or “high-throughput computing”, grid computing, MTCor “many-task computing” and others). We use the term HPC more broadlyherein to encompass virtually all forms of supercomputing in whichsignificant computing resources are required, even if only on atemporary basis—whether jobs consist of single tasks or multipledependent and independent tasks, or are optimized for cost, use ofcomputational resources, time required to complete individual tasks oran overall job, or other factors.

The PC revolution of the 1970s brought about a shift in traditionalparadigms of client-server computing. Computing evolved gradually fromserver-based extremes (users of “dumb terminals” executing time-sharingtasks on remote mainframes and other high-end servers) to client-basedextremes (users performing mostly local tasks on gradually more powerfulpersonal computers), and eventually to hybrid forms of client-servercomputing in which distributed networks such as the Internet facilitatethe hosting of an amalgam of hardware, software and networking services.

In these hybrid client-server environments, computing resources andfunctionality are allocated in many different ways across hosted serversand end-user clients. Yet, HPC tasks remained limited to server-basedextremes, as they required high-end computing resources not typicallyavailable on a personal computer or even a single more powerful server.

With the emergence of cloud computing in the mid-2000s, HPCfunctionality became much more widely accessible and affordable toindividuals and small companies, as well as large enterprises. Remote“on-demand” access to large amounts of computing resources dramaticallylowered costs (and thus expanded access) by distributing thefunctionality of “high-demand” tasks across a vast array of networkedphysical and virtual computing resources. While cloud computing alsoprovided hybrid client-server solutions in many other contexts, itoffered a unique “distributed server-based” solution to the HPC world.

However, cloud computing has not been a panacea to HPC users.Significant problems remain due to the relative complexity of HPC jobsin comparison to traditional client-server and remote desktopapplications. For example, before cloud computing, large enterprisespurchased or leased expensive high-end servers and other computingresources and operated them on their own premises. While enterprises hadthe flexibility of selecting computing resources that matched theirspecific demands, the overhead cost of such computing resources was inmany cases difficult to justify. The highest-end computing resourceswere required only for certain compute-intensive jobs, and sometimesonly for certain portions of such jobs. In essence, enterprises had toplan for a “worst-case scenario.”

Large enterprises relying on their own “on-premise” hardware oftensacrificed access to the latest computing resources. Purchased or leasedhardware is typically replaced toward the end of its lifecycle, by whichpoint it is several years old and one or more generations behind thelatest technology.

Moreover, end users were required to install and configure on theirhardware each third-party software package they licensed fromthird-party “independent software vendors” or ISVs. Unlike installing atraditional desktop application, which requires little more thanensuring that the correct operating system is present, installingcompute-intensive software is a more complex process due to the natureof HPC functionality. Such software frequently executes in parallel,with multiple instances of the software executing across multiple CPUcores, and often across multiple physical servers. Each job requires aunique configuration matching the requirements of the software to thehardware environment, including job-specific attributes relating to auser's compute model.

End users were responsible for addressing these hardware-softwaredependencies by matching the demands of each job to the hardwareenvironment—wholly apart from the complexities of sharing the computingresources of that hardware environment with other end users within theenterprise running jobs in parallel. Moreover, end users were solelyresponsible for testing or “tuning” the software and hardwareenvironment, and for generating “workflows” across and within individualjobs (such as extracting and analyzing intermediate as well as finalresults, combining multiple tasks in which the output of one task servesas the input to a subsequent task, perhaps based on various conditions,and an array of other more complex intra-job and inter-jobfunctionality). In this context, we use the terms workflow, jobs andtasks somewhat interchangeably, though a workflow typically representsone or more jobs, each of which consists of one or more individual HPCtasks.

Even the introduction of public cloud services—such as Amazon's AWS(“Amazon Web Services, including “Elastic Compute Cloud” or EC2),Microsoft's “Azure” and Google's “Google Cloud Platform (GCP)—onlypartially addressed these problems. These public cloud platforms areoften described as “infrastructure-as-a-service” or IaaS. In otherwords, these “back-end hardware providers” provide remote access tophysical and virtual computing environments that obviate the need topurchase or lease hardware computing resources for a worst-casescenario. Such computing resources can be accessed remotely on anon-demand basis to dramatically lower costs.

In addition to public cloud providers, other back-end hardware providersprovide “private clouds” or “private data centers” which often sacrificevirtualization functionality (and thus some level of security) in favorof high-end “bare metal” hardware designed for demanding HPCapplications. For example, the provisioning of physical serversfacilitates the use of faster networking technologies for intra-jobcommunication, as such servers can be tightly coupled given their closeproximity to one another. As with public cloud services, the computingresources of bare-metal providers can be accessed remotely on anon-demand basis to reduce costs.

However, whether an enterprise utilizes public clouds or private datacenters (or a combination thereof, including their own physicalhardware), most of the other problems referenced above remain—due to theinterdependencies among various attributes of HPC tasks and the hardwareand software environment in which they are executed. HPC users are stillresponsible for selecting the physical or virtual hardware environmentthat best addresses their needs.

For example, if certain jobs require the latest bare-metal hardware(which often comes at a premium cost), while other jobs require theflexibility of virtualization, users must either sacrifice one for theother, or incur the added complexity of contracting with multipledifferent back-end hardware providers. Moreover, users still must managethe differences among each of those hardware environments. Many cloudproviders offer virtual “core types” with specified amounts of availablecomputing resources, such as CPU cores, memory, storage, and networkbandwidth. Bare-metal providers, on the other hand, offer more limited(but often more powerful) choices of computing resources based on thecharacteristics of their physical servers.

Even with these choices, users cannot simply specify their computingresource needs at a higher-level of abstraction, and have such needsautomatically allocated among the various types of computing resourcesavailable from multiple back-end hardware providers. They areresponsible for making such determinations on their own, often withincomplete information. HPC users are focused on their own needs, andnot on the frequently-changing offerings of various back-end hardwareproviders. Moreover, any given enterprise lacks the volume of usageacross multiple providers necessary to obtain the most cost-efficientpricing.

HPC users also sacrifice the ability to “mix and match” the computingresource demands of any particular job with the computing resourcesoffered across multiple back-end hardware providers (including their ownon-premise hardware). For example, they cannot execute a job thatutilizes the high-end computing power of a bare-metal provider withtheir own existing storage, or that of a cloud provider. There is simplya lack of integration among the many different back-end hardwareproviders.

In addition to determining and managing the hardware environment, HPCusers also must obtain the rights to execute particular software in aremote cloud environment. And they must install and configure thesoftware for each job, as well as match the demands of a particular job(and the relevant software) with the appropriate amount of compatiblehardware computing resources.

They must develop their own tools to implement custom workflows, as wellas test or “tune” the software and hardware in advance of executing HPCjobs that are often complex, time-consuming and expensive. In short,they must manage all of the dependencies of each job on the provisionedhardware and software environment—including sharing data across clustersand physical servers, managing inter-cluster and inter-servercommunication, providing data security and privacy issues beyond thoseoffered by back-end hardware providers, maintaining a compliant HPCenvironment in accordance with contractual, regulatory and other legalrequirements, and many other aspects of complex HPC jobs.

Moreover, each ISV provides its own software license restrictions,typically by enforcing authentication and license management viathird-party “license servers.” Each ISV may impose differentrestrictions on the location of, and access to, its license server. Heretoo, HPC users are responsible for obtaining the rights and providinginterfaces to each relevant license server (wherever such licenseservers may be physically located).

While back-end hardware providers “meter” the usage of provisionedclusters (or other units of hardware resources), HPC users mustimplement their own custom “per job” metering if they desire to monitorthe cost of such IaaS resources on a per-job or other basis (at a higheror lower level of granularity). Moreover, if they desire to meter theusage of software (e.g., to gauge relative licensing costs), they mustprovide their own custom metering implementation.

In an effort to address some of these problems, a few vertical solutionshave emerged, offering more of a “software-as-a-service” or SaaSsolution than the IaaS solution offered by public and private cloudproviders. For example, in addition to providing IaaS features, somelarge ISVs have integrated their own software with a back-end publiccloud, or with their own hardware infrastructure. Such “ISV Clouds”offer users of their software a remote hardware platform for running HPCtasks.

However, users of such ISV Clouds are limited to a single softwareprovider, a significant limitation that eliminates users who require amore diverse selection of software. Moreover, users still must addressmany of the dependencies discussed above with respect to software andhardware tuning and workflows, as well as the need to provide, install,configure and manage their own proprietary or third-party software—ifeven allowed by the ISV Cloud provider.

Other vertical solutions provide their own IaaS environments (whetherdirectly or via a single third-party cloud provider), but with access tocertain third-party software packages. These “HW Clouds” also sufferfrom many of the same limitations discussed above. While providing endusers with a choice of software, their solutions are limited to thecomputing resources provided by a single back-end hardware environment.Such a significant limitation prevents users, for example, from takingadvantage of more powerful servers available only from bare-metalproviders, or more cost-effective solutions offered by other cloudproviders.

What is needed is an integrated compute platform that addresses theshortcomings of existing solutions described above, and offers true“platform-as-a-service” (PaaS) functionality by providing HPC users witha remote platform that enables them to select from multiple back-endhardware providers and multiple ISVs while automatically resolving theinterdependencies among those hardware and software environments. Suchan integrated compute platform should also address the dependencies ofsoftware and other attributes of HPC jobs on the selected hardwareenvironment.

SUMMARY

The present invention includes embodiments of systems and methods foraddressing the deficiencies noted above by providing a cloud-basedcompute platform that employs abstraction layers for communicating withand integrating the resources of multiple back-end hardware providers,multiple software providers and multiple license servers. Theseabstraction layers and associated functionality free users not only fromhaving to implement and configure provider-specific protocols, but alsofrom having to address interdependencies among selected hardware,software and license servers on a job-level basis or at other levels ofgranularity.

The platform of the present invention automatically selects computingresources among hardware, software and license servers from amongmultiple providers (including on-premise customer resources) inaccordance with higher-level user selections based on the demands ofindividual jobs and workflows. With respect to a given job defined by auser, the platform automatically interfaces with one or more back-endhardware providers to provision computing resources.

In one embodiment, an HPC user requests core types from specificback-end hardware providers, while in other embodiments the user'shigher-level computing resource selections are translated intolower-level requests to one or more back-end hardware providers selectedby the platform to optimize for the user's predefined goals (e.g., cost,execution time, particular computing resources, etc.). In otherembodiments, the platform generates suggested computing resourceselections automatically based upon an analysis of the user's needs,evidenced from the user's model and other input parameters.

In one embodiment, back-end hardware providers include multiple publiccloud providers and private data centers, as well as computing resourceslocated on an HPC user's own premises—all accessible via different APIsimplemented within the platform's back-end hardware abstraction layer.For example, an HPC user's job might be executed on servers within apublic cloud provider using networked storage located on the user'spremises. Or the user's servers might be supplemented with theadditional computing power of those offered by a cloud provider.

This integration of particular computing resources across multipleback-end hardware providers (including an HPC user's on-premisecomputing resources) offers an unparalleled level of flexibility notpreviously found in any HPC environment. HPC users need not be concernedwith inter-provider communication and, for example, the transfer of dataamong computing resources in different hardware environments, as suchtasks are handled automatically by the platform.

The platform also automatically installs and configures the selectedsoftware in the provisioned hardware environment (in some cases, acrossmultiple different hardware providers) in accordance with the user'sspecified configuration and input data. The platform further establishesconnections with relevant license servers via associated license files(including license keys) that govern a user's access to and usage ofassociated software and its components.

The platform provides users with workflow tools to facilitate not onlythe configuration of a single HPC task (e.g., executing a singlesimulation software package on a user's model), but also theconfiguration of more complex jobs involving multiple tasks performedserially or in parallel. For example, the output of one or more tasksmight be provided as input to subsequent tasks or jobs, or individualtasks or jobs may be repeated with different parameters. Workflowsinclude loops, conditions and other control flow computing constructs.

Moreover, users are provided with hardware and software “tuning” toolsthat enable users to test specific portions of a job or single task and,based on the results, reconfigure the computing resources and otherattributes of the hardware and software environment before incurring thetime and expense of executing a complex job or workflow. Because manyjobs require the use of significant amounts of computing resources overmany hours (or sometimes days, weeks or longer), the ability to test keyportions of jobs in advance (particularly those portions that arerepeated many times), and then iteratively revise initial hardware andsoftware configurations, saves the user significant time andexpense—both in advance of and during the actual execution of a complexworkflow.

In one embodiment, the platform recommends hardware computing resourceand/or software configuration options based on the results of hardwareand software tuning in an effort to best match the available computingresources with the demands of an HPC user's job or workflow. Suchdemands are inferred from an analysis of the user's model, input dataand intermediate results of tuning “test runs.”

In one embodiment, while a user's workflow is being executed, theplatform (in accordance with the user's workflow configuration) monitorsintermediate results and initiates certain actions, such as repeating orconditionally performing selected tasks, or even halting the executionof the workflow (e.g., to prevent wasted computation in the event of acatastrophic error detected based on such intermediate results). Inother embodiments, the platform (in accordance with an HPC user'sworkflow, including conditions, loops and other flow control constructs)invokes analytic software to perform analyses of intermediate as well asfinal results. In another embodiment, the platform discovers patternsamong outputs of similar jobs and workflows (e.g., via supervisedmachine learning techniques), which it uses to support variousrecommendations, such as different allocations of hardware or softwarecomputing resources.

The platform enforces license server restrictions based on a licensefile provided by the user or generated by the platform. For example, alicense file might limit a user's access to specified features of asoftware package. The platform connects to the relevant license server,via a license server abstraction layer, which enforces suchrestrictions.

The platform further includes a hardware and software metering modulethat monitors the execution of a user's workflow on the provisionedhardware environment. In one embodiment, such monitoring occurs at thegranularity of an individual task, as well as a more complex job orworkflow. Moreover, because a workflow (or component job or task) may beexecuted across multiple back-end hardware providers, such monitoringtracks specified components of a user's workflow, each of which may bemetered differently by different back-end hardware providers. Suchmetering even extends, in one embodiment, to an HPC user's on-premisehardware, which typically has no metering capability itself.

While an individual back-end hardware provider may not distinguish oneuser's workflow or job from another, the platform tracks (in oneembodiment) the utilization of individual hardware resources (e.g., CPUcores, memory, storage, network bandwidth, etc) for the purpose ofmonitoring usage of each resource associated with a user's workflow (orcomponent jobs or tasks). Such usage is later correlated with variouspricing schemes (e.g., established by different public cloud providers)to calculate fees and facilitate billing to users, their enterprises,partners or other entities.

It should be noted that the “customer” of a back-end hardware providermay be the provider of the platform of the present invention, or may (inother embodiments) be a third-party partner, an ISV or even anindividual HPC user or enterprise. For example, a company might selectits own cloud account for execution of its users' workflows (orcomponents thereof), or the public or private cloud account of athird-party partner of the platform provider. In any event, bymonitoring the execution of workflow components across multiple back-endhardware providers, the platform tracks hardware usage at a level ofgranularity sufficient to support virtually any desired pricing andbilling mechanism.

The hardware and software metering module also supports monitoring anHPC user's usage of individual software packages or components thereof(at a workflow or job level, or virtually any other level ofgranularity). Such metering is facilitated by management of theconnectivity to remote license servers, access to which is monitored bythe platform. Such monitoring functionality extends beyond mere“checkout” and “checkin” events, and is also used as a basis ofon-demand metering and pricing of software usage.

In another embodiment, such monitored usage information is employed as abasis for optimizing an HPC user's goals. For example, while fasterhardware may generally be more expensive, slower hardware may result inincreased software licensing costs. The platform optimizes for the HPCuser's specified goal and makes recommendations for future jobs orworkflows (or in advance in the case of hardware and software tuning“test runs”). In yet another embodiment, result-based pricing issupported by virtue of the fact that the platform monitors not only theusage of particular software (or component features), but alsouser-specified results.

It should be noted that, even if a user's workflow involves only theexecution of a single software package on the hardware environment of asingle back-end hardware provider, the software execution time may beonly a subset of the hardware execution time. For example, a back-endhardware provider may charge for hardware usage from the moment acluster of hardware is provisioned (until it is de-provisioned), eventhough only some of that time involves actual execution of the software.Additional “hardware usage” time may be required to configure and launchinstances of the software, and to extract the results.

For more complex workflows, “software usage” time is allocated acrossmultiple clusters or physical servers, multiple back-end hardwareproviders and multiple software packages (and component featuresthereof). Here too, the hardware and software metering module of theplatform monitors such “software usage” at desired levels of granularitysufficient to support virtually any desired pricing and billingmechanism.

In another embodiment (discussed in greater detail in U.S. patentapplication Ser. No. 15/235,004, filed Aug. 11, 2016 and entitled“Dynamic Optimization of Simulation Resources,” the disclosure of whichis incorporated by reference herein), the platform also monitors the useof computing resources during the execution of a job or workflow, andprovides a mechanism for dynamically optimizing such resources toaddress inter-instance dependencies.

The platform further includes a billing layer and associatedfunctionality, in conjunction with the hardware and software meteringmodule, to facilitate the platform's support of various differentpricing schemes and detailed usage allocations for invoicing multipledifferent entities (individuals, HPC enterprises, ISVs, third-partypartners, etc.). In one embodiment, the platform supports thecalculation of fees based not only on metered usage or consumption-basedon-demand pricing, but also on results-based, advance deposit,subscription, per-seat, concurrent user and other pricing models adoptedby various provider entities.

Given the enhanced importance of data privacy and security issues whenremotely executing HPC jobs and workflows in cloud-based environments,the platform provides an additional layer of data privacy and securityby encrypting data (at provision, de-provision and compute-time)uniformly across multiple different back-end hardware environments. Suchencryption further enhances (and is fully compatible with) whateverlevel of security is provided by different back-end hardware providers.The platform further includes a uniform “data management” interface thataccounts for the different data structures and protocols employed bydifferent back-end hardware providers.

In comparison with existing solutions, the advantages of the platform ofthe present invention are numerous. HPC users and enterprises areprovided enhanced flexibility to match the demands of their jobs andworkflows with the computing resources offered by multiple back-endhardware providers and multiple software providers. Yet, they retain theflexibility to leverage their existing on-premise computing environment(including “bring-your-own” or BYOL licenses and proprietary software,as well as on-premise compute and storage resources).

Moreover, the platform frees HPC users from integrating and configuringselected hardware and software (including license servers), even to theextent they “mix and match” different computing resources acrossmultiple hardware and software providers (including on-premise hardwareand software resources). Even within the context of a single back-endhardware provider, HPC users need not be concerned with the provisioningand de-provisioning of clusters of individual “virtual machines” (VMs),and the launching of instances of software across such VMs.

HPC users are provided with workflow and hardware and software tuningtools that not only provide enhanced flexibility in defining a complexworkflow, but also minimize the resulting time and expense (or otheroptimized factors) of executing such workflows. Hardware and softwaremetering provide convenient mechanisms for efficiently managing the timeand expense of executing HPC workflows and jobs, as well as supporting avariety of current and future pricing, licensing and billing schemes.Moreover, they further enhance the flexibility and robustness ofindividual HPC workflows and jobs, by permitting the performance ofconditional results-based actions (for execution as well as pricingpurposes) both during and after execution of an HPC workflow or job.

In short, the integrated platform of the present invention frees HPCusers not only from the constraints of limited hardware and software(and license server) choices, but also from the need to resolve theinterdependencies that result from such multi-provider integration(including hardware and software compatibility issues, softwareinstallation and job and workflow configuration, license management,different licensing and pricing mechanisms, data security and privacy,etc.).

Additional aspects and embodiments of the platform of the presentinvention are described in greater detail below.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a system diagram illustrating one embodiment of key componentsof a multi-provider server of the cloud-based platform of the presentinvention.

FIG. 2 is a flowchart illustrating one embodiment of an interactiveworkflow generation and execution process performed by a multi-providerserver of the cloud-based platform of the present invention.

DETAILED DESCRIPTION

Detailed embodiments of the systems and methods of the present inventionare illustrated in the accompanying Figures and described below. Itshould be noted that the present invention is not limited to theparticular embodiments discussed below with reference to the Figures.For example, the present invention could be integrated into distinctserver platforms with the functionality reallocated among fewer or moredifferent conceptual modules (implemented in hardware and/or software,and allocated among server and client devices), reflecting differentengineering tradeoffs, without departing from the spirit of the presentinvention. Additional embodiments of the systems and methods of thepresent invention (including additional standard and proprietaryhardware and software) will be apparent to those skilled in the art.

The software components of the present invention illustrated in thefollowing Figures are embodied in physical memory and processed by CPUs(single and/or multi-core) on physical servers (not explicitly shown) toimplement the functionality of the present invention. Such physicalservers and such memory may be located in public or private clouds,end-user premises or other computing environments (together with orapart from the software implementing users' HPC workflows and jobs)without departing from the spirit of the present invention. In oneembodiment, HPC users access the platform of the present invention overthe Internet via standard web browsers on their client devices (servers,desktops, laptops, mobile phones and other networked devices).

Turning to FIG. 1, system diagram 100 illustrates one embodiment of acloud-based platform of the present invention that is implemented by aMulti-Provider Server 101. We refer to the cloud-based “platform”interchangeably with the Multi-Provider Server 101, in that thefunctionality of the platform is implemented by Multi-Provider Server101, which integrates functionality and resources from various otherentities, all of which are interconnected via the Internet 195. HPCend-user customers 155 access Multi-Provider Server 101 over theInternet 195 via one or more different interfaces.

Most common is a web-based interface 156 that enables HPC users 155 toaccess the platform remotely (from their networked desktop and mobileclient devices located virtually anywhere in the world) to generate andexecute HPC workflows. Web-based interface 156 provides the mostuser-friendly interface for the generation and execution of workflows,as well as the viewing of results. Advanced HPC users 155 can alsoperform much of this functionality via a command-line interface (CLI)157—akin to the use of “terminal” command-line interfaces (rather thanthe standard GUI interface) on desktop computers.

In certain situations, HPC users 155 employ API clients 158 to accessthe platform, enabling them, for example, to integrate their own customsoftware with the invocation of HPC workflows and jobs. Multi-ProviderServer 101 implements various APIs, included within a Security and APIlayer 102, to facilitate such access to the platform.

In one embodiment, an HPC user 155 desires to utilize its own on-premisehardware and software environment in a manner that is otherwiseindependent of the platform. However, for certain relatively demandingjobs, the HPC user 155 desires a “burst” capability that enableson-demand use of additional computing resources available from Back-EndHardware Providers 115 integrated with the platform. In such scenarios,particular APIs in Security and API layer 102 (discussed below) permit acustom script running on the HPC user's 155 on-premise environment toinvoke a predefined workflow or job on the platform that supplements theHPC user's 155 on-premise job and returns the results to the HPC user155.

In this embodiment, the APIs facilitate the exchange of data (includingjob configuration, input data, intermediate data if the job is inprogress, and results) between the HPC user 155 and the platform. As aresult, the HPC user 155 can simply click a button on the platform'swebsite, causing a job to run entirely on the platform (includinginstallation and configuration of the relevant software), or partiallyon the user's laptop (for example), with “burst” capability to continueon the platform when additional computing resources are required.

User interface layer 150 facilitates the two-way communication betweenthe platform and the various different interfaces provided to HPC users155. User Interface Manager 152 generates the various different userinterfaces presented to HPC users 155. In one embodiment, suchinterfaces include a web-based form enabling an HPC user 155 to selectsoftware from an available library, as well as hardware computingresource options. Another web-based forms enables the HPC user 155 toinput their model, software configuration and input data specific to aworkflow or job. Additional user interfaces include workflow tools forcombining individual HPC tasks and implementing loops, conditions andother control flow constructs to control the execution of the workflow(as well as hardware and software tuning tools to test portions of aworkflow or job, and reconfigure hardware and software resources, beforeinitiating execution of the “full” workflow).

User and Customer Manager 153 generates and maintains a database of userentities, including individual HPC users 155 and their companyaffiliation (and user-specific access control and other limitations).This “user database” is maintained in DB 190. Storage of this user data,as well as other data utilized by Multi-Provider Server 101 can ofcourse be distributed across other storage devices in various differentlocations without departing from the spirit of the present invention. Inthe embodiment illustrated in FIG. 1, DB 190 is also employed to storeinformation specific to various other entities, such as third-partypartners and providers of back-end hardware, software and licenseservers.

In this embodiment, the functionality of Multi-Provider Server 101(including DB 190) resides on the virtual and physical computingresources of one or more of the Back-End Hardware Providers 115. Theowner/operator of the platform administers the platform's functionalityremotely from client devices on its own premises (not shown).

Security and API layer 102 includes a security mechanism (implementedvia Data and Security Manager 104) that encrypts data at provision,de-provision and compute-time to ensure a uniform level of data privacyand security that complements whatever security is provided by otherentities accessing the platform. The platform employs APIs withinSecurity and API layer 102 for a variety of different purposes,depending upon the type of entity being accessed, as is discussed ingreater detail below.

Data and Security Manager 104 also implements uniform data structuresthat are employed internally, and then translated for communication tovarious entities. For example, even public cloud providers 116 havedifferent data structures and APIs for storing and retrieving data(analogous to different file systems on desktop computers). To move databack and forth among different Back-End Hardware Providers 115, theplatform must translate to and from its universal format and communicatewith the different APIs of these Back-End Hardware Providers 115.

Moreover, software often assumes that storage is “local,” requiring theplatform to abstract the actual physical (or virtual) locations of thedata when configuring the software for a particular workflow or job. Inone embodiment, if performance is significantly affected by the locationof the storage, the platform performs translations before and after ajob is executed to ensure that, during execution, local storage (i.e.,where the job is executed) is maintained for performance reasons.

By handling inter-node (e.g., inter-VM) communication, as well ascommunication across multiple different Back-End Hardware Providers 115,at a job level, the platform frees users from having to address suchdependencies. Moreover, a public cloud provider 116 meters usage at a VMor physical server level, whereas an individual job or workflow mayinvolve multiple VMs or physical servers. In one embodiment, if one ofthe VMs experiences a hardware failure, the platform saves the jobstate, re-provisions another VM and restarts the job to avoid a moresignificant failure. In many cases, the software may effectively be“unaware” of the pausing/restarting of the job.

In another embodiment, the platform performs pre-job diagnostics (e.g.,CPU, disk performance and network latency tests) to assess the“robustness” of the hardware environment and minimize the risk of havingto halt execution of a job. In other embodiments, additional resourcesare allocated to provide a level of redundancy for similar reasons.

Multi-Provider Manager 105 provides additional functionality to managethe overall relationships and communications with various differenttypes of provider entities (including HPC users 155, Partners 132,Back-End Hardware Providers 115, Software Providers 125 and providers ofLicense Servers 128). Multi-Provider Manager 105 communicates internallywith various platform modules that manage direct communications withsuch entities.

In one embodiment, the owner/operator of the platform contracts withvarious third-party Partners 132 to manage certain aspects of itsrelationship with HPC users 155. For example, a Partner 132 may beresponsible for soliciting individuals and enterprises to become HPCusers 155, and for managing the contractual and billing relationshipswith those solicited HPC users 155, as well as facilitating theintegration of on-premise computing resources of those solicited HPCusers 155 with the platform. Partners 132 may also effectively serve asBack-End Hardware Providers 115 and provide their own hardwareinfrastructure, or employ that of a public 116 or private 117 cloudprovider for the benefit of their solicited HPC users 155.

Partner Layer 130 implements communications between the platform andindividual Partners 132, involving translations of various differentdata structures, protocols and APIs. Partner Manager 131 implements suchtranslations and interfaces with various platform components, such asBilling Layer 140, which is responsible for exchanging fees, invoicesand related reports with Partners 132, HPC users 155, Back-End HardwareProviders 115 and Software Providers 125, among other entities. BillingManager 145 implements such fee calculations, generates invoices andrelated reports and manages payments (interfacing with Multi-ProviderManager 105 and Hardware and Software Metering Manager 180, as well asother internal platform components).

Among the most significant entities integrated with the platform areBack-End Hardware Providers 115. As alluded to above, the workflows andjobs of HPC users 155 are not executed directly by Multi-Provider Server101. Instead the platform integrates with the computing resourcesprovided by multiple different hardware providers, including publiccloud providers 116, private data center providers 117 and theon-premise computing resources 118 provided by HPC users 155.

As explained in greater detail below, the platform permits an HPC user155 to select computing resources from one or more of the availableBack-End Hardware Providers 115 (even for an individual workflow orjob). In one embodiment, those choices are filtered by the attributes ofthe particular workflow or job designed by the HPC user 155. Forexample, if a particular software package is unavailable on the hardwareenvironment of a particular Back-End Hardware Provider 115, then thecomputing resource options provided by that Back-End Hardware Provider115 will be absent from the user interface seen by the HPC user 155. Inanother embodiment, the lack of such options will not be apparent in theuser interface (e.g., in a list of higher-level computing resourceoptions), but such incompatible options will not be chosen internally byMulti-Provider Server 101.

Access to the different computing resource environments of the Back-EndHardware Providers 115 is managed by Hardware Abstraction Layer 110,which translates internally-generated uniform formulations of computingresources into the specific core types, physical servers or otheroptions offered by individual Back-End Hardware Providers 115. In oneembodiment, the platform (with the assistance of Multi-Provider Manager105) analyzes the higher-level requirements of the workflow or jobspecified by an HPC user 155, such as a need for 100 CPU cores. Suchhigher-level requirements might be satisfied by different core typesfrom two different Back-End Hardware Provider 115—one provider offering10 nodes (servers), each having 10 CPU cores/node, and the otherprovider offering 20 nodes, each having 5 CPU cores/node.

If HPC user 155 specifies overall cost as the sole optimizing factor,the latter choice may be less expensive, as the cost of 10-core nodesmay be more than double the cost of 5-core nodes. But, if the HPC user155 instead desires to optimize for time (e.g., preferring a job thatcompletes in 1 day instead of 3 days, even at a greater cost), theformer choice may be preferred—e.g., because the inter-nodecommunication overhead among 10 nodes (as opposed to 20 nodes) resultsin significantly faster overall job execution time. In one embodiment,the platform automatically makes this decision in accordance with theoptimization factors specified by HPC user 155. In other embodiments,the platform presents detailed recommendations from which HPC user 155makes the final decision. It will be apparent to those skilled in theart that other tradeoffs of various different factors, and otherimplementations of this comparison among multiple different choices ofhardware computing resources, may be considered in making this decision.

In another embodiment, the selected computing resources with respect toan HPC user's 155 individual workflow or job are implemented on thevirtual and/or physical hardware environments of multiple Back-EndHardware Providers 115. In making this determination, the platformconsiders various factors, including the model, software andconfiguration and input data provided by HPC user 155, as well asoptimization parameters (e.g., total calendar time, execution time,cost, etc.) specified by HPC user 155, as referenced above.

In addition to utilizing Hardware Abstraction Layer 110 to provisionselected computing resources, the platform also employs HardwareAbstraction Layer 110 to manage the two-way communication with theBack-End Hardware Providers 115 for the purpose of monitoring executionof workflows (with respect to both hardware and software components),de-provisioning computing resources and performing various billing andother functions.

For example, while certain Back-End Hardware Providers 115 have theirown “schedulers” for allocating computing resources to a job, theplatform essentially provides a higher-level scheduler that istranslated into the particular data structures, protocols and APIsrequired by each individual Back-End Hardware Provider 115 (includingAPIs for integrating on-premise computing resources without suchscheduler functionality).

In addition to providing access to multiple Back-End Hardware Providers115 (within and across HPC tasks, jobs and more complex workflows), theplatform also provides HPC users 155 with a choice of multiplethird-party software packages from multiple Software Providers 125. SWAbstraction Layer 120 manages the different APIs among the variousSoftware Providers 125 integrate into the platform (e.g., for receivingsoftware updates, exchanging invoices, usage reports and other billingand payment information, including electronic payments—with theassistance of Billing Manager 145 and Billing Layer 140).

ISV and Customer SW Manager 122 manages the platform's software library,a subset of which is made accessible to specified HPC users 155 based onthe terms of their licenses to such third-party software (and itscomponent features). ISV and Customer SW Manager 122 maintains distinctsoftware “images” for each operating system on each Back-End HardwareProvider 115. In one embodiment, before a job is executed, the platforminstalls the relevant image so that it can be replicated as neededwithin the selected hardware environment. In this manner HPC users 155are ensured in advance of the compatibility of the selected softwarewith the specified hardware environment.

In another embodiment, the platform includes development and integrationtools that enable HPC users 155 to develop and integrate proprietarysoftware for their use during subsequent workflows and jobs. Such toolsensure compatibility with the available hardware environments andprovide configuration tools to optimize for the best “HW-SW match” inaccordance with the optimization factors specified by the HPC user 155.In yet another embodiment, the platform generates OS-independent“containers” to facilitate the installation of such software acrossdifferent operating systems and Back-End Hardware Provider 115.

ISV and Customer SW Manager 122 also includes “virtual desktop” toolsthat facilitate analytics and other interactive GUI views during andafter the execution of a workflow or job. Similar to “remote desktop”software in which applications are controlled locally, but executeremotely, virtual desktop functionality provides HPC users 155 with theability to invoke and monitor certain aspects of their jobs during andafter execution.

As noted above, different ISVs have different requirements for thelocation and use of their proprietary and third-party License Servers128. License Server Abstraction Layer 127 provides significantflexibility in integrating with various different License Servers 128(across multiple different ISVs) installed in virtually any physicallocation. For example, some ISVs may limit the location of the physicalLicense Server 128 (e.g., to the ISV premises or the HPC user 155premises), while others may permit the software implementing the licenseserver functionality to be physically located anywhere—e.g., on a publiccloud 116 (provided the ISV maintains sufficient control to ensure theintegrity of the license server functionality).

License Manager 126 provides tools to ensure that the HPC user's licensefile on the relevant License Server 128 is accessible by the current job(e.g., for authentication and check-in and check-out purposes, as wellas for ensuring that the terms of the license are strictlyenforced)—regardless of its physical location. In certain cases, advancecustom integration is required if the License Server 128 is located onthe premises of an HPC user 155.

License Manager 126 works with HW and SW Metering Manager 180 to ensurethat the terms of the license are strictly enforced. In one embodiment,HPC users 155 provide a “bring-your-own” (BYOL) license which theplatform makes accessible via the relevant License Server 128 during theexecution of a job. In another embodiment, the owner/operator of theplatform also obtains advance authorization from the relevant ISVs togenerate on-demand licenses (prepaid and otherwise) for this samepurpose. In this scenario, if a BYOL license provided by an HPC user 155fails (e.g., due to an outdated version or other reason), the platformcan automatically redirect access to a platform-hosted License Server128 to executed a job (or, in another embodiment, to provide on-demand“burst” capabilities in the event the HPC user 155 exceeded allottedusage requirements).

Due to this level of integration with the platform, HPC users 155 arefreed from many of the constraints of existing BYOL (and even someon-demand) licensing schemes. The platform's level of integration withthird-party License Servers 128 provides for two-way communicationduring execution of a job, and employs proxies to address firewallissues across various different Back-End Hardware Providers 115(including on-premise firewalls at the HPC user's 155 physicallocation). By probing such License Servers 128 in advance, the platformavoids the costs of unnecessary hardware provisioning to HPC users 155(e.g., in the event that the license authentication fails).

To assist HPC users 155 in setting up a workflow, Workflow Manager 170provides tools that are insulated from the hardware and softwarecompatibility issues with which HPC users 155 typically are forced toaddress. In other words, these workflow tools are at a higher level ofabstraction, enabling HPC users 155 to focus on the functionality oftheir specific HPC tasks.

As alluded to above, Workflow Manager 170 includes templates and toolsthat enable HPC users 155 to implement loops, conditions and othercontrol flow constructs both within and across individual HPC tasks andjobs (involving software packages from multiple Software Providers 125executing across the hardware resources of multiple Back-End HardwareProviders 115). The output of one task can be redirected as input tosubsequent tasks. Execution can branch to specified tasks based onintermediate results in accordance with specified constraints. Forexample, in the context of designing an airplane wing, a common repeatedcalculation or “sweep” involves varying the angle of the wing. The samecalculation can be repeated in multiple test runs, varying only in theparameters used to define the angle of the wing.

Moreover, HW and SW Tuner 172 includes tools enabling HPC users 155 todesign “test runs” to facilitate the selection of desired hardwareresource and software configuration parameters. For example, an HPC user155 can identify a relatively small portion of a job that is frequentlyrepeated, and test that portion on multiple different hardwareconfigurations. Once a desired configuration is determined, the desiredhardware computing resources can be provisioned to execute the full job.In another embodiment, the HPC user 155 specifies conditions for thetest runs which, if met, will automatically cause a reconfiguration andexecution of the full job in the desired hardware environment. Such“hardware tuning” tools provide not only flexibility for testingpurposes, but also provide cost savings by avoiding long expensive jobsthat ultimately fail (or waste significant resources) due to a poorselection of hardware computing resources.

HW and SW Tuner 172 also includes “software tuning” tools that enableHPC users 155 to design test runs to measure the software-specificaspects of their workflows and jobs in an effort to identify theappropriate hardware computing resources. For example, HW and SW Tuner172 enables HPC users 155 to test and compare the performance ofdifferent configurations (such as different implementations of aparticular software driver) before selecting the desired configuration.

In other cases, more complex workflows can be developed based onintermediate results—e.g., repeating calculations until certainconditions are met, or invoking analytic software if other conditionsare met. Moreover, partial or intermediate results may indicate that thehardware configuration needs to be altered—e.g., to include a GPU-onlyconfiguration, or to increase or decrease the number of provisioned VMs.

As noted above, HW and SW Tuner 172 also include optimization toolsenabling HPC users 155 to specify optimization factors, such as jobexecution time and job cost, among others. Such tools provide automatedmeans of discovering execution time and pricing “sweet spots” (e.g.,balancing node costs, communication overhead, licensing restrictions andvarious other factors).

Analytics Manager 174 provides tools to customize the configuration ofanalytic software (e.g., included in the platform's software library)for use both during and after the execution of a job or more complexworkflow. In one embodiment, such analytics software provides HPC users155 with an interactive GUI-based tool that enable them not only tomonitor intermediate results of a workflow, but also to affect thoseresults by modifying certain parameters and visualize the effects ofsuch modifications in real time.

Once an HPC user 155 has defined and configured a job or workflow, andtuned the hardware and software, HPC Task Manager 175 is employed toprovision the specified computing resources on the selected hardwareenvironment, install and configure the selected software and initiateexecution of the workflow. HPC Task Manager 175 also monitors theexecution of the workflow to obtain intermediate status (e.g., if a jobor a portion thereof fails, such as a provisioned VM) and alert the HPCuser 155 when the workflow completes or is prematurely terminated.

As noted above, HW and SW Metering Manager 180 monitors the usage ofboth hardware and software resources during execution of the workflowfor a variety of different purposes. Monitored hardware and softwareusage data provides the basis for fee calculations—e.g., to invoice,provide reports and exchange payments with HPC users 155 and Partners132, as well as Back-End Hardware Providers 115 and Software Providers125. HW and SW Metering Manager 180 interacts with Billing Manager 145and Billing Layer 140 in this regard.

Moreover, HW and SW Metering Manager 180 also works with License Manager126 to monitor software usage and ensure compliance with relevantlicensing schemes. As alluded to above, the platform's integration withhardware and software providers, and ability to monitor hardware andsoftware usage at discrete levels of granularity, facilitates new typesof pricing schemes. In addition to consumption-based on-demand pricingbased on hardware and software usage (i.e., time), results-based andother forms of pricing (e.g., based on hardware resource consumption)can be supported in other embodiments.

For example, in one embodiment, pricing is based on the “success” of ajob—measured by specified goals determined from the results extractedfrom the software during or after completion of a job. In anotherembodiment, advance purchases of blocks of time are supported—i.e., asnonrefundable amounts against which actual monitored hardware and/orusage is applied. Such block purchases are provided at “volume discount”prices, with overages either forbidden or charged at premium rates.

Various consumption-based, results-based and other hardware and softwarepricing and licensing schemes will be evident to those skilled in theart, all of which are supported by the platform's integration withmultiple hardware and software providers, as well as its tightlyintegrated monitoring mechanisms both within and across individualtasks, jobs and more complex HPC workflows. This multi-provider approachaffords HPC users 155 improved visibility into the costs of HPCworkflows, as well as flexibility to optimize for cost, time and otherdesired factors by “mixing and matching” different hardware and softwareenvironments, “bursting” from on-premise hardware into the cloud forexcess capacity, and other configuration, pricing and licensing options.

Flowchart 200 in FIG. 2 provides a dynamic look (from the perspective ofan HPC user 155) into the design and execution of an HPC workflow.Before any HPC user 155 even begins to design a job or workflow, theplatform establishes in advance hardware provider setups in step 201with Back-End Hardware Providers 115 (via Hardware Abstraction Layer110). In one embodiment, the platform provisions and installs thefunctionality of Multi-Provider Server 101 on a selected Back-EndHardware Providers 115, from which it provides the various abstractionand integration layers discussed above with other third-party providers.

Moreover, in step 202, the platform generates and installs images ofeach version of software in its software library for each supportedoperating system, along with the necessary software drivers. Thisenables the platform to install the appropriate image of any selectedsoftware package on any provisioned hardware environment with theassurance that compatibility has already been confirmed. The platformfurther implements, via User Interface Layer 150, the Web 156, CLI 157and API Client 158 interfaces through which HPC users 155 access theplatform.

When an HPC user 155 initially desires to prepare and execute a workflowon the platform, the user typically first defines its model and preparesthe input data it will supply to initialize the desired software (instep 204). HPC user 155 then invokes the platform's workflow tool instep 206 and provides the platform with its model and input data. Theplatform's workflow tool presents HPC user 155 with the software libraryfrom which HPC user 155 selects, in step 208, one or more desiredsoftware packages. As noted above, a workflow can involve multiplesoftware packages, whether as part of a single job or a more complexmulti-job workflow.

Then, in step 210, the workflow tool presents HPC user 155 with a listof available hardware resource “core types” and other serverconfigurations available from Back-End Hardware Providers 115. In oneembodiment, the platform generates and presents these options at ahigher level of abstraction than the specific core types and physicalserver configurations offered by each Back-End Hardware Provider 115. Inother embodiments, the options identify the particular Back-End HardwareProviders 115 that provide such options (e.g., to enable HPC user 155 toselect or avoid a desired provider).

In another embodiment, this list is filtered based upon the user'sprevious selection of software (e.g., if selected software is notcompatible with, or otherwise unavailable on, certain back-end hardwareprovider platforms). In other embodiments, the platform analyzes theuser's model and other input data, and provides recommended hardwareresource options to HPC user 155 based on that analysis.

Once HPC user 155 selects from among the available hardware resourceoptions, the platform's workflow tool presents HPC user 155 with aninterface to configure the workflow and each component job. As discussedabove, this configuration is application-dependent based upon theselected software packages, as well as the user's model and other inputdata. Here too, the choices are presented at a higher-level abstraction,as the platform automatically resolves any dependencies between thepreviously selected hardware and software options. In one embodiment,the workflow tool automatically configures those hardware-specificoptions that are determined based on the previously selected hardwarecomputing resources (though additional specification ofhardware-specific parameters, such as a desired number of cores, maystill be required).

With the assistance of the platform's workflow tool, HPC user 155determines the desired control flow configuration (e.g., if multiple HPCtasks and/or multiple jobs are involved) and specifies them inaccordance with the options provided by the workflow tool. As describedabove, the workflow might involve multiple software packages, with thecontrol flow determining the conditions under which subsequent softwarepackages are invoked, as well as whether the results of one package areprovided as input to another package.

If any pre-workflow hardware or software tuning is desired, HPC user 155invokes the HW Tuning tool in step 214 and/or the SW Tuning Tool in step216. In one embodiment, the platform presents common templates forhardware and software tuning. In another embodiment, an optimizer toolis provided, enabling HPC user 155 to specify desired optimizationfactors (e.g., time, cost, etc.) as well as conditions under whichspecified hardware resource configurations will be accepted or rejected.In yet another embodiment, HPC user 155 provides a custom scriptspecifying the precise control flow of hardware and/or software tuningprocesses.

HPC user 155 initiates the defined workflow in step 220. Note, however,that if HPC user 155 specified any hardware or software tuning “testruns” in steps 214 or 216, then the platform will execute those testruns first, as explained below.

In step 222, Multi-Provider Server 101 provisions the selected hardwarecomputing resources on the one or more Back-End Hardware Providers 115selected by (or generated for) HPC user 155 in step 210. Multi-ProviderServer 101 also replicates the model and user input data into theprovisioned hardware environment.

In step 224, Multi-Provider Server 101 installs the appropriate versionsof the selected software images into the provisioned hardwareenvironment, and then configures such software in accordance with thespecified configuration defined in step 212. As noted above, multipleinstances of the software may be further replicated (e.g., into multipleVMs or physical servers, and potentially across multiple back-endhardware providers) depending upon the hardware resource configuration(e.g., based on the number of specified cores). Additional instances mayalso be replicated and/or destroyed during execution of the workflow.

In step 226, Multi-Provider Server 101 configures connections betweenthe software installed and configured in the provisioned hardwareenvironment and each relevant License Server 128 (via SW AbstractionLayer 120). This enables the software to execute properly once HPC user155 is authenticated and individual features are checked out and checkedin during execution of the workflow.

In one embodiment, license keys with relatively short durations (e.g., 1day instead of 1 year) are generated repeatedly to provide an addedlayer of security (e.g., to prevent “phony” license servers fromcontinuing operation upon obtaining a valid license key). LicenseManager 126 manages frequent (e.g., daily) communications with therelevant License Servers 128 (via SW Abstraction Layer 120) toauthenticate these frequently regenerated license keys and ensurecontinued access by authorized HPC users 155.

At this point, in step 228, Multi-Provider Server 101 performs anyspecified hardware and/or software tuning test runs. Though typicallyfar smaller and quicker than actual jobs or workflows, these test runsmay, in one embodiment, result in automatic reconfiguration of thespecified computing resources. In other embodiments, the platformgenerates recommendations to HPC user 155, or merely provides resultsfrom which HPC user 155 makes its own determining regarding any suchreconfigurations.

Thus, in step 235, the HPC user 155 (or the platform, in the otherembodiments discussed above), determines whether to “re-tune” thehardware and/or software selections previously made in steps 208 and210. If re-tuning is necessary or desired, control returns to step 208(at which point further hardware and/or software tuning may or may notoccur, depending on whether HPC user 155 re-invokes the hardware and/orsoftware tuning tool. As noted above, in one embodiment (not shown), theplatform automatically reconfigures the computing resources andre-initiates the workflow execution in step 220 (as re-provisioning maybe required).

Otherwise, once no re-tuning is dictated in step 235, Multi-ProviderServer 101 initiates execution of the “full” workflow in step 240. Asdescribed above, the platform monitors execution of the workflow in step242, including hardware and software metering (for usage and billingpurposes), as well as for implementation of the control flow specifiedin the workflow.

Upon completion of the workflow execution (including early terminationin certain instances), the platform implements a “cleanup” process instep 244. Results are extracted, stored and provided to the HPC user 155in step 250 (via User Interface Layer 150). In addition, the platformde-provisions hardware resources and extracts and stores meteredhardware and software usage information on the platform for billing andother purposes, as described above. As also described above, analyticsmay be performed on the results (including, in one embodiment, duringexecution of the workflow), though execution of such analytics softwareis considered part of the workflow itself (as such software is part ofthe platform's software library).

The present invention has been described herein with reference tospecific embodiments as illustrated in the accompanying Figures. Manyvariations of the embodiments of the functional components and dynamicoperation of the present invention will be apparent to those skilled inthe art without departing from the spirit of the present invention.

The invention claimed is:
 1. An integrated cloud-based platform,comprising: (a) a back-end hardware provider abstraction layer thatenables a user of the platform to configure a job by selecting fromamong a plurality of hardware core types across a plurality of back-endhardware providers; (b) a software abstraction layer that enables theuser to further configure the job by selecting from among a plurality ofsoftware packages across a plurality of software providers; (c) alicense server abstraction layer that implements a network connectionbetween the user's job and the license server associated with thesoftware selected by the user; (d) a manager that provisions thehardware resources associated with the selected hardware core type fromthe associated back-end hardware provider, installs and configures theselected software on the provisioned hardware, and invokes the executionof the user's job; (e) a hardware metering module that monitors theusage of the provisioned hardware during execution of the job; (f) asoftware metering module that monitors the usage of the selectedsoftware during execution of the job; and (g) a user interface layerthat makes the results of the job accessible to the user.